<?php

class Page extends Admin_Controller {

    function __construct() {
        parent::__construct();
        $this->load->model('page_m');
    }

    public function index($id = NULL) {
        // lấy tất cả pages có trong data 
        $this->data['pages'] = $this->page_m->get_with_parent();

        // Load view
        $this->data['subview'] = 'admin/page/index';
        $this->load->view('admin/_layout_main', $this->data);
    }

    public function order() {
        $this->data['sortable'] = TRUE;
        $this->data['subview'] = 'admin/page/order';
        $this->load->view('admin/_layout_main', $this->data);
    }

    public function order_ajax() {
        //Save oder from ajax
        if (isset($_POST['sortable'])) {
            $this->page_m->save_order($_POST['sortable']);
        }
        // lấy tất cả pages có trong data 
        $this->data['pages'] = $this->page_m->get_nested();

        // Load view
        $this->load->view('admin/page/order_ajax', $this->data);
    }

    public function edit($id = NULL) {
        // lấy một page từ id hoặc tạo mới nếu không có thông tin id
        if ($id) {
            $this->data['page'] = $this->page_m->get($id);
            count($this->data['page']) || $this->data['errors'][] = 'Page could not be found'; // nếu ko tìm thấy page thì in lỗi
        } else {
            // nếu không truyền id thì tạp page rỗng
            $this->data['page'] = $this->page_m->get_new();
        }

        // Pages for dropdown
        $this->data['pages_no_parents'] = $this->page_m->get_no_parents();

        // lấy rules để validate form
        $rules = $this->page_m->rules;
        $this->form_validation->set_rules($rules);

        // tiến hành chạy form
        if ($this->form_validation->run() == TRUE) {
            $data = $this->page_m->array_from_post(array('title', 'slug', 'body', 'template', 'parent_id'));
            $this->page_m->save($data, $id);
            redirect('admin/page');
        }

        // load view

        $this->data['editable'] = TRUE;
        $this->data['subview'] = 'admin/page/edit';
        $this->load->view('admin/_layout_main', $this->data);
    }

    public function delete($id) {
        $this->page_m->delete($id);
        redirect('admin/page');
    }

    // kiểm tra slug có tồn tại chưa
    public function _unique_slug($str) {

        // KHÔNG validate nếu slug đã tồn tại
        // trừ khi là slug của page đang dùng
        // lấy id từ segment thứ 4
        $id = $this->uri->segment(4);
        $this->db->where('slug', $this->input->post('slug'));
        !$id || $this->db->where('id !=', $id);
        $page = $this->page_m->get();

        if (count($page)) {
            $this->form_validation->set_message('_unique_slug', '%s already exist');
            return FALSE;
        }
        return TRUE;
    }

}

?>
